/**
 * 
 */
package com.vanstone.imgapp.api.img.services;

import java.util.List;
import java.util.Map;

import com.vanstone.common.ObjectDuplicateException;
import com.vanstone.imgapp.api.img.Tag;

/**
 * @author shipeng <br />
 *         标签业务API
 */
public interface TagService {

  public static final String SERVICE = "tagService";

  /**
   * 添加标签信息
   * 
   * @param tagname
   * @return
   * @throws ObjectDuplicateException
   */
  Tag addTag(String tagname) throws ObjectDuplicateException;

  /**
   * 保存或者获取标签
   * 
   * @param tagname
   * @return
   */
  Tag saveorget(String tagname);

  /**
   * 通过id获取tag
   * 
   * @param id
   * @return
   */
  Tag getTag(long id);

  /**
   * 通过tagname获取tag
   * 
   * @param tagname
   * @return
   */
  Tag getTagByTagname(String tagname);

  /**
   * 获取tags列表
   * 
   * @param key
   * @param offset
   * @param limit
   * @return
   */
  List<Tag> getTags(String key, long offset, long limit);

  /**
   * 获取tags列表
   * 
   * @param key
   * @return
   */
  long getTotalTags(String key);

  /**
   * 通过ids获取tags作为map信息
   * 
   * @param ids
   * @return
   */
  Map<Long, Tag> getTagsAsMap(List<Long> ids);

  /**
   * 通过ids获取tags
   * 
   * @param ids
   * @return
   */
  List<Tag> getTags(List<Long> ids);

  /**
   * 获取栏目下的所有标签，根据热门来匹配
   * 
   * @param categoryID
   * @param offset
   * @param limit
   * @return
   */
  List<Tag> getTagsByCategoryID(String categoryID, long offset, long limit);

  /**
   * 获取栏目下的所有标签，根据热门来匹配
   * 
   * @param categoryID
   * @return
   */
  List<Tag> getTotalTagsByCategoryID(String categoryID);
}
